package com.tianzehua.jvm.classloader;

import java.lang.reflect.Method;

/**
 * 命名空间的测试
 * 不同命名空间的两个类是相互不可见的，子加载器的命名空间包含所有的父加载器的命名空间；
 * 不同命名空间的类所创建的对象，方法也是不可见的，所以程序会抛出异常；
 * @author tianzehua
 * @date 2019/04/02
 */
public class MyTest18 {

    public static void main(String[] args)  throws Exception{
        MyTest13 loader1 = new MyTest13("loader1");
        MyTest13 loader2 = new MyTest13("loader1");
        loader1.setPath("E:\\");
        loader2.setPath("E:\\");
        Class<?>  clazz1 = loader1.loadClass("com.tianzehua.jvm.classloader.MyPerson");
        Class<?>  clazz2 = loader2.loadClass("com.tianzehua.jvm.classloader.MyPerson");
        System.out.println(clazz1 == clazz2);

        Object object1 =clazz1.newInstance();
        Object object2 =clazz2.newInstance();

        Method method = clazz1.getMethod("setMyPerson",Object.class);
        method.invoke(object1,object2);
    }
}
